package org.ala.tcp_feign_common.msg.login;

import java.nio.charset.Charset;

import org.ala.tcp_feign_common.msg.IByteMessageEncoder;

import io.netty.buffer.ByteBuf;


/**
 * 登录消息编码器
 * 
 * [0x01 | 消息总长(4字节) | 用户名长度(4字节) | 密码长度(4字节) | 用户名 | 密码]
 * 
 * @author 骆毅(ala)
 * @date 2024年4月19日
 */
public class LoginByteMessageEncoder implements IByteMessageEncoder<LoginByteMessage> {

	@Override
	public void encoding(ByteBuf byteBuf, LoginByteMessage msg) {
		//	消息类型(1子节)
		byteBuf.writeByte(msg.type().getVal());
		
		//	用户名
		byte[] username = msg.getUserName().getBytes(Charset.forName("utf-8"));
		//	密码
		byte[] password = msg.getPassword().getBytes(Charset.forName("utf-8"));
		
		//	消息总长
		int len = 4 + 4 + username.length + password.length;
		byteBuf.writeInt(len);
		
		//	用户名长度（4子节）
		byteBuf.writeInt(username.length);
		//	密码长度（4子节）
		byteBuf.writeInt(password.length);
		
		//	用户名
		byteBuf.writeBytes(username);
		//	密码
		byteBuf.writeBytes(password);
	}

}
